﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.Sql;
using System.Data.SqlClient;
using System.Data.Common;
using System.Data.SqlTypes;
using System.ComponentModel;

namespace BibliotecaClases
{
    public class CADEspectaculo
    {
        private string cadenaConexion = SingletonCadenaConexion.Instancia.Cadena;
        private SqlConnection conexion;
        DataSet ds;
        SqlDataAdapter da;
        private string sentenciaSQL;


        public CADEspectaculo()
        {
            conexion = new SqlConnection(cadenaConexion);
            sentenciaSQL = null;        
        }


        public DataSet ObtenerTipoEspectaculos()
        {
            try
            {
                conexion = new SqlConnection(cadenaConexion);
                da = new SqlDataAdapter("select tipo, idTipo from TipoEspectaculo order by idTipoEspect", conexion);
                ds = new DataSet();
                da.Fill(ds, "tipo");
                return ds;
            }
            catch (Exception ex)
            {
                //e.Message;
                return null;
            }
        }

       
       
        public bool InsertarEspectaculo(ENEspectaculos espect)
        {
            bool insertado = false;

            // Sentencia para la BD
            SqlCommand sentencia;


            try
            {
                sentenciaSQL = "insert into Espectaculos (nombreCorto, nombre, descripcion, tipo, zona, dia, horaInicio, horaFin, fechaAlta)";
                sentenciaSQL += " values ('" + espect.NombreCorto + "','" + espect.Nombre + "','" + espect.Descripcion + "','";
                sentenciaSQL += espect.Tipo + "','" + espect.Zona + "','" + espect.Dia + "','" + espect.HoraInicio + "','";
                sentenciaSQL += espect.HoraFin + "','" + espect.FechaAlta + "')";

                conexion.Open(); // Abrimos la conexion

                //Generamos sentencia de acceso a la BD
                sentencia = new SqlCommand(sentenciaSQL, conexion);
                // Ejecutamos sentencia SQL
                if (sentencia.ExecuteNonQuery() == 1)
                    insertado = true;

            }

            catch (SqlException se)
            {
                throw new Exception("Error en la BD al insertar",se);
            }

            catch (Exception e)
            {
                throw new Exception(e.Message);
            }

               
                return insertado;
        }

        public List<ENEspectaculos> ObtenerTodosEspectaculos()
        {
            List<ENEspectaculos> listaEspect = new List<ENEspectaculos>();





            return listaEspect;

        }


        /*
        public DataSet ObtenerTablaEmpleados(ref string m)
        {
            try
            {
                conexion = new SqlConnection(cadena);
                da = new SqlDataAdapter("select * from Empleados where visible = 1", conexion);
                ds = new DataSet();
                da.Fill(ds, "empleados");
                return ds;
            }
            catch (Exception ex)
            {
                m = ex.Message;
                return null;
            }
        }

        public DataSet BuscarEmpleado(string dni, string nombre, string apellidos, string tipo, 
           string provincia, string localidad, string login)
        {
            string consulta = "select * from Empleados ";
            string aux = "";
            if (dni != "")
            {
                consulta += "where dni ='" + dni + "'";
                aux = " and ";
            }
            if (nombre != "")
            {
                if (aux == "")
                    aux = " where";
                consulta += aux + " nombre like '" + nombre + "%'";
            }
            if (apellidos != "")
            {
                if (aux == "")
                    aux = " where";
                else
                    aux = " and";
                consulta += aux + " apellidos like '" + apellidos + "%'";
            }
            if (tipo != "")
            {
                if (aux == "")
                    aux = " where";
                else
                    aux = " and";
                consulta += aux + " tipo like '" + tipo + "%'";
            }
            if (provincia != "")
            {
                if (aux == "")
                    aux = " where";
                else
                    aux = " and";
                consulta += aux + " provincia like '" + provincia + "%'";
            }
            if (localidad != "")
            {
                if (aux == "")
                    aux = " where";
                else
                    aux = " and";
                consulta += aux + " localidad like '" + localidad + "%'";
            }
            if (login != "")
            {
                if (aux == "")
                    aux = " where";
                else
                    aux = " and";
                consulta += aux + " login='" + login + "'";
            }
            try
            {
                conexion = new SqlConnection(cadena);
                da = new SqlDataAdapter(consulta, conexion);
                ds = new DataSet();
                da.Fill(ds, "Empleados");
                return ds;
            }
            catch (Exception)
            {
                return null;
            }
        }

        public string ModificarEmpleado(string dni, string nombre, string apellidos, string fnacimiento,
            string tipo, string telefono, string direccion, string cpostal, string provincia, string localidad, 
            string email, string login, string password, string foto)
        {
            string retorno = "";
            try
            {
                conexion = new SqlConnection(cadena);
                da = new SqlDataAdapter("select * from Empleados where dni='" + dni + "' and visible = 1", conexion);
                ds = new DataSet();
                da.Fill(ds, "empleados");
                ds.Tables["empleados"].Rows[0][0] = dni;
                ds.Tables["empleados"].Rows[0][1] = nombre;
                ds.Tables["empleados"].Rows[0][2] = apellidos;
                ds.Tables["empleados"].Rows[0][3] = fnacimiento;
                ds.Tables["empleados"].Rows[0][4] = tipo;
                ds.Tables["empleados"].Rows[0][5] = telefono;
                ds.Tables["empleados"].Rows[0][6] = direccion;
                ds.Tables["empleados"].Rows[0][7] = cpostal;
                ds.Tables["empleados"].Rows[0][8] = provincia;
                ds.Tables["empleados"].Rows[0][9] = localidad;
                ds.Tables["empleados"].Rows[0][10] = email;
                ds.Tables["empleados"].Rows[0][11] = login;
                ds.Tables["empleados"].Rows[0][12] = password;
                ds.Tables["empleados"].Rows[0][13] = foto;


                SqlCommandBuilder cbuilder = new SqlCommandBuilder(da);
                if (da.Update(ds, "empleados") == 0) //si no se ha actualizado ninguna fila
                    retorno = "ERROR al modificar el empleado con DNI: " + dni;

                return retorno;
            }
            catch (SqlException sqlEx)
            {
                return "ERROR relacionado con la base de datos.DNI del empleado: " + dni + ".\nDetalles:\n" + sqlEx.Message;
            }
            catch (Exception ex)
            {
                return "ERROR al modificar el empleado con DNI: " + dni + ".\nDetalles:\n" + ex.Message;
            }
        }

        public string EliminarEmpleado(string dni)
        {
            string retorno = "";
            try
            {
                conexion = new SqlConnection(cadena);
                da = new SqlDataAdapter("select * from Empleados where dni = '" + dni + "' and visible = 1", conexion);
                ds = new DataSet();
                da.Fill(ds, "Empleados");
                ds.Tables["Empleados"].Rows[0][14] = 0;
                SqlCommandBuilder cbuilder = new SqlCommandBuilder(da);
                if (da.Update(ds, "Empleados") == 0) //si no se ha actualizado ninguna fila
                    retorno = "ERROR al modificar el empleado con DNI: " + dni;

                return retorno;
            }
            catch (SqlException sqlEx)
            {
                return "ERROR relacionado con la base de datos.DNI del empleado: " + dni + ".\nDetalles:\n" + sqlEx.Message;
            }
            catch (Exception ex)
            {
                return "ERROR al modificar el empleado con DNI: " + dni + ".\nDetalles:\n" + ex.Message;
            }
        }

        public bool ComprobarLoginLibre(string log)
        {
            bool resultado = false;
            try
            {
                conexion = new SqlConnection(cadena);
                da = new SqlDataAdapter("select login from Provincias where login = " + log, conexion);
                ds = new DataSet();
                da.Fill(ds, "provincias");
                if (ds.Tables[0].Rows.Count > 0)
                    resultado = false;
                else
                    resultado = true;

                return resultado;
            }
            catch (Exception ex)
            {
                //ex.Message;
                return false;
            }
        }

        public bool ExisteElEmpleado(string empleado)
        {
            conexion = new SqlConnection(cadena);
            da = new SqlDataAdapter("select dni, visible from Empleados where dni = '" + empleado + "' and visible = 1", conexion);
            ds = new DataSet();
            da.Fill(ds, "Empleados");
            DataTable dt = ds.Tables["Empleados"];
            return (dt.Rows.Count > 0);
        }

    }
         */
    }
}
